package com.剑指offer一;

/**
 * 剑指 Offer 05. 替换空格
 *
 * @author leon
 * @date 2021年12月17日 10:15
 */
public class ReplaceSpace {
    public String replaceSpace(String s) {
        StringBuilder builder = new StringBuilder();
        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) == ' ') {
                builder.append("%20");
            } else {
                builder.append(s.charAt(i));
            }

        }
        return builder.toString();

    }

    //    作者：LeetCode-Solution
    //    链接：https://leetcode-cn.com/problems/ti-huan-kong-ge-lcof/solution/mian-shi-ti-05-ti-huan-kong-ge-by-leetcode-solutio/
    //    来源：力扣（LeetCode）
    //    著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。

    /**
     *      考点：由于一个空格要替换为三个空格，所有我们创建三倍长度的数组
     */
    public String replaceSpace1(String s) {
        int length = s.length();
        char[] array = new char[length * 3];
        int size = 0;
        for (int i = 0; i < length; i++) {
            char c = s.charAt(i);
            // 当遇见charat(i)==' ' 时，长度加三
            if (c == ' ') {
                array[size++] = '%';
                array[size++] = '2';
                array[size++] = '0';
            } else {
                array[size++] = c;
            }
        }
        String newStr = new String(array, 0, size);
        return newStr;
    }

    /**
     * 库函数
     */
    public String replaceSpace2(String s) {
        return s.replace(" ","%20");
    }
}
